package logica.pruebas;

import java.awt.Color;

import logica.clases.Coordenada;
import logica.clases.Jugador;
import logica.clases.Pais;
import logica.clases.Partida;
import logica.colecciones.Jugadores;
import logica.colecciones.Mapa;
import logica.excepciones.JugadoresException;

public class pruebaPartida {
	public static void main(String[] args) throws JugadoresException {
		Jugador jugador1 = new Jugador(1, "DD", Color.blue), jugador2 = new Jugador(2,"Juan",Color.blue), 
				jugador3 = new Jugador(3,"JJ",Color.black);
		Coordenada coordenada1 = new Coordenada(3,5), coordenada2 = new Coordenada(1,2), coordenada3 = new Coordenada(2,2),
					coordenada4 = new Coordenada(3,2), coordenada5 = new Coordenada(5,3), coordenada6 = new Coordenada(3,6);
		Jugadores jugadores = new Jugadores(3);
		Mapa mapa = new Mapa();
		
		jugadores.insertar(jugador1);
		jugadores.insertar(jugador2);
		jugadores.insertar(jugador3);
		Partida partida = new Partida("Partida1", jugadores);
		
		System.out.println("Partida creada");
		System.out.println(partida.getCodigo());
			
		Pais pais1 = new Pais (1, "Uruguay", coordenada1);
		Pais pais2 = new Pais (2, "Brasil", coordenada2);
		Pais pais3 = new Pais (3, "Mexico", coordenada3);
		Pais pais4 = new Pais (4, "Chile", coordenada4);
		Pais pais5 = new Pais (5, "Argentina", coordenada5);
		Pais pais6 = new Pais (6, "Bolivia", coordenada6);
		
		mapa.insert(pais1);
		mapa.insert(pais2);
		mapa.insert(pais3);
		mapa.insert(pais4);
		mapa.insert(pais5);
		mapa.insert(pais6);
		
		partida.iniciarPartida(mapa);
		System.out.println("Partida inicializada: " + partida.getIniciada());
		Jugador jugprue = partida.getJugadores().obtenerJugador(1);
		System.out.println("Cant paises jugador1: "+jugprue.cantPaises());	
		System.out.println("Cant fichas jugador1: "+jugprue.getCantFichasDisp());
		jugprue = partida.getJugadores().obtenerJugador(2);
		System.out.println("Cant paises jugador2: "+jugprue.cantPaises());	
		System.out.println("Cant fichas jugador2: "+jugprue.getCantFichasDisp());
		jugprue = partida.getJugadores().obtenerJugador(3);
		System.out.println("Cant paises jugador3: "+jugprue.cantPaises());	
		System.out.println("Cant fichas jugador3: "+jugprue.getCantFichasDisp());
		
		System.out.println("Iniciar turno ...");
		partida.iniciarTurno();
		Jugador jugEnTurno = partida.obtenerJugadorEnTurno();
		System.out.println("Jugador en turno: "+jugEnTurno.getNombre());
		System.out.println("Cant paises jugEnTurno: "+jugEnTurno.cantPaises());
		System.out.println("Cant fichas jugador1: "+jugEnTurno.getCantFichasDisp());
//		System.out.println("Cant paises jugador1: "+partida.jugEnTurno.cantPaises());
		Integer codP1 = partida.codPaisesAsig(1).get(1);
		System.out.println("Cod. Pais de jugador1: "+codP1);
		System.out.println("Cant fichas en Pais de jugador1: "+partida.obtenerCantFichasPais(codP1));
		System.out.println("Distribuir 1 fichas de jugador1 en pais "+codP1+"...");
		partida.distribuirFichas(1, codP1, 1);
		System.out.println("Cant fichas jugador1: "+jugEnTurno.getCantFichasDisp());
		System.out.println("Cant fichas en Pais1: "+partida.obtenerCantFichasPais(codP1));
		Integer codP2 = partida.codPaisesAsig(2).get(1);
		System.out.println("Cant fichas en Pais2: "+partida.obtenerCantFichasPais(codP2));
		
		boolean paisdeljugador = partida.paisDelJugador(codP2, 1);
		System.out.println("Pais2 de jugador1?: "+paisdeljugador);

		int i=1;
		while(partida.obtenerCantFichasPais(codP1)>1 && !partida.paisDelJugador(codP2,1)){
			System.out.println("Ataque "+i+" desde pais "+codP1+" a pais "+codP2+"...");
			partida.realizarAtaque(codP1, codP2);
			System.out.println("Cant fichas en Pais1: "+partida.obtenerCantFichasPais(codP1));
			System.out.println("Cant fichas en Pais2: "+partida.obtenerCantFichasPais(codP2));
			System.out.println("Pais2 de jugador1?: "+partida.paisDelJugador(codP2, 1));
			i++;
		}
		if (partida.paisDelJugador(codP2, 1) && partida.obtenerCantFichasPais(codP1)>1){
			System.out.println("Reagrupar 1 ficha desde pais "+codP1+" a pais "+codP2+"...");
			partida.reagruparFichas(codP1, codP2, 1);
			System.out.println("Cant fichas en Pais1: "+partida.obtenerCantFichasPais(codP1));
			System.out.println("Cant fichas en Pais2: "+partida.obtenerCantFichasPais(codP2));
		}
		System.out.println("Finalizar turno ...");
		partida.finalizarTurno(jugEnTurno.getNumero());
		System.out.println("Iniciar turno ...");
		partida.iniciarTurno();
		jugEnTurno = partida.obtenerJugadorEnTurno();
		System.out.println("Jugador en turno: "+jugEnTurno.getNombre());  
	}
}
